#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N=2e5;
const int maxn=1e6;
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
int a[N+10];
int zer[N+10],tot;//零的个数

void solve()
{
	tot=0;
        int n;cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];if(!a[i])zer[++tot]=i;
        }zer[++tot]=n+1;//0和-1的位置也要加上
        int al=0,ar=0,m=0;//左右端点，最大值的次数
        for(int i=1;i<=tot;i++){
            int ans=1,fh=1;//次数和符号
            for(int j=zer[i-1]+1;j<zer[i];j++){
                if(a[j]<0)fh*=-1;
                if(abs(a[j])>1)ans++;
            }
            if(fh>0&&m<ans)m=ans,ar=zer[i],al=zer[i-1];
            if(fh<0&&m<ans){
                int anss=ans;
                for(int j=zer[i-1];j<zer[i];j++){
                    if(abs(a[j])>1)anss--;
                    if(a[j]<0){
                        if(m<anss)m=anss,al=j,ar=zer[i];
                        break;
                    }
                }anss=ans;
                for(int j=zer[i]-1;j>zer[i-1];j--){
                    if(abs(a[j])>1)anss--;
                    if(a[j]<0){
                        if(m<anss)m=anss,ar=j,al=zer[i-1];
                    }
                }
            }

           cout<<al<<' '<<n+1-ar<<'\n';
}

int main()
{
	int T;
	sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}